/*****************************************************************************
*
*  PROJECT:		
*               
*  LICENSE:		
*
*  DEVELOPER:	
*
*****************************************************************************/

#ifndef CGAME_H
#define CGAME_H

#define _CRT_SECURE_NO_WARNINGS
#define WIN32_LEAN_AND_MEAN

#include <Windows.h>
#include <MMSystem.h>

#include <iostream>
#include <string>
#include <sstream>

#include <gl\glut.h>
#include <Cg\cg.h>
#include <Cg\cgGL.h>

#pragma comment( lib, "cg.lib" )
#pragma comment( lib, "cggl.lib" )

#include "keyboardStates.h"

#include "Eon.h"

#define DEFAULT_FPS_LIMIT			100
#define CAMERA_MOVEMENT_SPEED		0.5

class CGame
{
public:

	static const int RESULT_EXIT_GAME = 0;
	static const int RESULT_CONTINUE_GAME = 1;

	CGame() { m_nReturnValue = 1; };

	int init ( HDC hDC );
	static void keyboardFunc( void );
	int mainLoop( void );
	static void renderGLScene( void );
	static void resizeGLScene ( GLsizei w, GLsizei h );
	static void shutDown( void );

	static HWND hWnd;
	static HDC hDC;

	static int m_nReturnValue;

	static Eon::Skybox m_Skybox;
	static Eon::Camera m_Camera;

	static Eon::Model::modelMD5 m_Player;
	static Eon::Model::model3DS m_Player2;
	static Eon::Model::model3DS m_Player3;

	static Eon::TextureMgr m_TextureMgr;
	static Eon::Texture *m_TextureGrey_BMP;
	static Eon::Texture *m_TextureAbe_BMP;
	static Eon::Texture *m_TextureEon_BMP;
	static Eon::EffectsMgr m_EffectsMgr;

private:

	static DWORD m_dwCurrentTime;
	static DWORD m_dwFPSLimit;
	static DWORD m_dwTimeOfLastFrame;
};

#endif // CGAME_H